<template>
  <div id="ratingBarChart" style="width: 1000px; height: 800px"></div>
</template>

<script>
// 引入基础 ECharts 库
import * as echarts from 'echarts'
// 导入前20商家评分数据
import top20RatingData from './dazhong_average_top20_rating.json'

export default {
  name: 'Top20MerchantRatingBar',
  mounted() {
    this.initRatingBarChart()
  },
  methods: {
    initRatingBarChart() {
      // 初始化 echarts 实例
      const myChart = echarts.init(document.getElementById('ratingBarChart'))

      // 提取x轴商家名称和对应评分
      const merchantNames = top20RatingData.map(item => item.name)
      const ratings = top20RatingData.map(item => item.average_rating)

      // 配置直方图的选项
      const option = {
        title: {
          text: '评分前20商家分布',
          left: 'center',
        },
        tooltip: {
          trigger: 'axis',
          axisPointer: {
            type: 'shadow'
          },
          formatter: '{a} <br/>{b}: {c}',
        },
        grid: {
          left: '8%',  // 左侧留出更多空间防止商家名称显示不全
          right: '4%',
          bottom: '15%',  // 底部留出更多空间放置旋转后的标签
          containLabel: true
        },
        xAxis: {
          type: 'category',
          data: merchantNames,
          name: '商家名称',
          axisLabel: {
            rotate: 45,  // 旋转角度增大，适应较长的商家名称
            interval: 0,
            fontSize: 12  // 适当缩小字体
          }
        },
        yAxis: {
          type: 'value',
          name: '平均评分',
          min: 4.3,  // 根据数据范围设置最小值
          max: 4.8,  // 根据数据范围设置最大值
          axisLabel: {
            formatter: '{value}'  // 显示原始评分值
          }
        },
        series: [
          {
            name: '平均评分',
            type: 'bar',
            data: ratings,
            itemStyle: {
              color: '#36cbcb'  // 采用不同颜色区分评分图表
            },
            barWidth: '50%'
          }
        ]
      }

      // 使用配置项和数据显示图表
      myChart.setOption(option)

      // 监听窗口大小变化，自动调整图表尺寸
      window.addEventListener('resize', () => {
        myChart.resize()
      })
    }
  }
}
</script>

<style scoped></style>